1. Field of The Invention
The present invention relates generally to a system for integrating software applications and, more particularly, to a user-interactive applications integration system that integrates software applications having incompatible programming interfaces.
2. Related Art
Historically, computers have had a profound effect upon the manner in which companies conduct business. Initially, computers were only used at the highest levels of large corporations. They were typically used, for example, to run business software to manage business functions such as payroll, scheduling, and inventory. These software systems were generally referred to as business enterprise systems. As the cost of computing decreased, the use of computers expanded to support other areas of the organization. Of primary importance is the evolution of production software to automate factory-floor production.
Although this automation has typically led to improved efficiency and increased productivity, automation of large businesses and factories has often been conducted on a piecemeal basis due to the cost of such automation. For example, different portions of an assembly line are often automated at different times and often with different computer equipment. This is a result of the varying capabilities of the computer systems available at the time of purchase. As a result, when computers first appeared on the factory floor, they were generally isolated systems dedicated to automating selected steps in production. Accordingly, these isolated systems are often referred to as "islands of automation." In such organizations, different functions in the overall process are automated but do not necessarily communicate with one another. As a result, it has been difficult and expensive to control an entire factory floor process for a large manufacturing facility from a central location except on a piecemeal basis.
While business software was generally solving large company-wide problems, production software attempted to solve smaller, more isolated problems. Furthermore, while business software was more transaction- and batch-oriented, production software was more real-time in nature. These differing needs caused the two fields of computing to diverge. In addition, a third field of computing evolved with the introduction of low-cost microprocessors. Specialized factory-floor microcontrollers implementing such microprocessors have been used to automate even more factory-floor tasks than production software and include, for example, programmable logic controllers (PLC's) and other "smart" plant-floor devices. Thus, there are generally three fields of computer technology supporting activities at a different functional layer of an organization. Enterprise business systems support business management functions; production systems support factory floor operations; and microcontrollers support specialized factory floor functions.
Over the last decade the market-place has become increasingly dynamic. Businesses have had to adapt more quickly to changing market conditions. This has forced business enterprise systems to suffer constant modification and adopt more real-time behaviors, and has simultaneously forced production computers to become more flexible. This in turn has increased the frequency and volume of data that is transferred between the business and production systems, and between each of the many production systems. Thus, while industry's historical focus has been on the optimization of computer technology to address the special needs of each field of computer technology, the current trend is to make computers at all functional layers of an organization intercommunicate via electronic data transfers.
There has always been a requirement to transfer data between computers in an organization, both horizontally between computers in the same functional level of the organization, and vertically between computers in adjacent organizational levels. In the past, manual data re-entry was an often-used approach. Hardcopy printouts generated by the business enterprise systems would be provided to an operator who manually entered the information into one or more production systems. Although this may have been an acceptable approach in the past, such an approach is not sufficiently responsive in today's dynamic business environment. As a result, the demand for electronic data transfer capability between the various business management and production level computers has increased significantly.
Computer products have always provided minimal support of electronic data transfers between software applications residing in the same functional level of an organization. On the business management level, for example, integrated business enterprise software products are commonly used to effect electronic data transfer between the software applications in the integrated package. Organizations that have not acquired a single, integrated business software package typically have developed custom software to effect the necessary electronic data transfer. While electronic data transfer capability can be implemented using custom software, the market place dynamics that have caused the enterprise business and production systems to suffer constant modification also force electronic data transfer software to be constantly reworked. This continued modification forces companies to either maintain in-house programming expertise, or repeatedly hire software consultants to implement the needed changes. As a result, custom software is not only expensive to develop, but in a changing market place, it is also costly to maintain.
With respect to the factory floor, software programmers have also been employed to develop custom data transfer solutions which allow the different "islands of automation" to communicate with each other. For the reasons noted above, this has been found to be difficult and expensive. In addition, such an approach is rather inflexible and assumes that the overall system remains static. When further equipment and application software is to be integrated into the overall system, the software programmers must be tasked with rewriting the code for all applications involved and to prepare additional custom code for interface purposes. As a result, electronic data transfer capability is usually limited to transfers between equipment/software from the same manufacturer.
For electronic data transfers between adjacent organizational levels there are numerous problems in such integration of existing applications because of the differences in hardware and their associated operating systems and because of the differences in the software applications themselves. For example, data from applications running on computers having proprietary hardware architectures and operating systems is often not usable on another system. In addition, different applications use different data types according to their specific needs. Moreover, incompatible data structures often result because of the different groupings of data elements by the applications. For example, an element with a common logical definition in two applications may still be stored in two different representations. In addition, applications written in different languages usually cannot communicate with one another since data values are often interpreted differently. For example, C and Fortran interpret logical and boolean values differently.
What is needed, therefore, is a system for automatically integrating applications having incompatible programming interfaces at the same or different functional levels of an organization in a fast, efficient and cost effective manner.